package com.agile.springboot.controller;

import com.agile.springboot.common.Result;
import com.agile.springboot.entity.Option;
import com.agile.springboot.service.OptionService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping("/option")
public class OptionController {

    @Resource
    OptionService optionService;

    /**
     * 新增选项
     * @param option 信息尽可能完整
     * @return 结果相关信息
     */
    @PostMapping("/addOption")
    public Result<?> addOption(@RequestBody Option option){
        if(optionService.addOption(option)==1){
            return Result.success(option, "添加选项成功");
        }
        return Result.error("-1","添加选项失败");
    }

    /**
     * 物理删除选项
     * @param option 选项实体
     * 所必须的参数为 id 选项id
     * @return 结果相关信息
     */
    @PostMapping("/deleteOption")
    public Result<?> deleteOption(@RequestBody Option option){
        if(optionService.pscDelOption(option.getId())==1){
            return Result.success(option, "删除选项成功");
        }
        return Result.error("-1","删除选项失败");
    }

    /**
     * 修改选项信息
     * @param option 选项实体
     * 所必须的参数为 id 选项id
     * @return 结果相关信息
     */
    @PostMapping("/updateOption")
    public Result<?> updateOption(@RequestBody Option option){
        if(optionService.updateOption(option)==1){
            return Result.success(option, "修改选项成功");
        }
        return Result.error("-1","修改选项失败");
    }

    /**
     * 获取选项——根据选项id
     * @param option 选项实体
     * 所必须的参数为 id 选项id
     * @return Option 实体
     */
    @PostMapping("/getOptionById")
    public Result<?> getOptionById(@RequestBody Option option){
        Option option1 = optionService.searchOptionById(option.getId());
        if(option1!=null){
            return Result.success(option1, "获取选项成功");
        }
        return Result.error("-1","获取选项失败");
    }

    /**
     * 获取选项——根据问题id
     * @param option 选项实体
     * 所必须的参数为 question_id 所属问题id
     * @return Option 实体
     */
    @PostMapping("/getOptionByQuestionId")
    public Result<?> getOptionByQuestionId(@RequestBody Option option){
        List<Option> options = optionService.SearchOptionByQuestionId(option.getQuestion_id());
        if(!options.isEmpty()){
            return Result.success(options, "获取选项列表成功");
        }
        return Result.error("-1","获取选项列表失败");
    }
}

